package com.newsplatform.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.newsplatform.dto.NewsRequest;
import com.newsplatform.entity.News;

import java.util.List;

/**
 * 新闻服务接口
 * 
 * @author Logan.Li
 */
public interface NewsService extends IService<News> {
    
    /**
     * 分页查询新闻
     */
    IPage<News> getNewsPage(Integer page, Integer size, Integer status, Long categoryId, String keyword);
    
    /**
     * 创建新闻
     */
    News createNews(NewsRequest request, String username);
    
    /**
     * 更新新闻
     */
    News updateNews(Long id, NewsRequest request, String username);
    
    /**
     * 发布新闻
     */
    void publishNews(Long id, String username);
    
    /**
     * 归档新闻
     */
    void archiveNews(Long id, String username);
    
    /**
     * 置顶/取消置顶新闻
     */
    void toggleTopNews(Long id, Boolean isTop, String username);
    
    /**
     * 批量删除新闻
     */
    void batchDeleteNews(List<Long> ids, String username);
    
    /**
     * 增加浏览次数
     */
    void incrementViewCount(Long id);
    
    /**
     * 点赞新闻
     */
    void likeNews(Long id);
    
    /**
     * 获取热门新闻
     */
    IPage<News> getHotNews(Integer page, Integer size);
    
    /**
     * 获取最新新闻
     */
    IPage<News> getLatestNews(Integer page, Integer size);
    
    /**
     * 获取推荐新闻
     */
    IPage<News> getRecommendedNews(Integer page, Integer size);
}
